const fs = require('fs')
const path = require('path')

// 递归读取文件夹下的所有 HTML 文件
function readHTMLFiles(dir, callback) {
    fs.readdir(dir, (err, files) => {
        if (err) {
            console.error("Error reading directory:", err)
            return
        }

        files.forEach(file => {
            const filePath = path.join(dir, file)
            fs.stat(filePath, (err, stat) => {
                if (err) {
                    console.error("Error stating file:", err)
                    return
                }

                if (stat.isDirectory()) {
                    readHTMLFiles(filePath, callback) // 递归读取子文件夹
                } else if (path.extname(filePath) === '.html') {
                    // 读取 HTML 文件内容
                    fs.readFile(filePath, 'utf8', (err, data) => {
                        if (err) {
                            console.error("Error reading file:", err)
                            return
                        }

                        callback(filePath, data)
                    })
                }
            })
        })
    })
}

const map = new Map()

// 读取文件夹中的所有 HTML 文件并输出其内容
readHTMLFiles(__dirname, (path, data) => {
    const pattern = /[^\\]+\.html$/
    const fileName = path.match(pattern)[0]

    function verify(val) {
        return typeof val === 'string' && fileName.toLowerCase().indexOf(val.toLowerCase()) > -1
    }

    function result(selectedText) {
        return data
    }

    map.set(verify, result)
})

module.exports = map